layui.use(['table', 'laydate', 'util', 'upload','form'], function () {
    // 获得模块对象
    var table = layui.table;
    var form = layui.form;
    var $ = layui.jquery;
    var layer = layui.layer;
    var laydate = layui.laydate;
    var util = layui.util;
    var upload = layui.upload;
    var  form = layui.form;
    
    
    
    
    // 汽车站数据表格渲染
    table.render({
        elem: '#busCircuitTable',
        url: 'route/busCircuit',
        method: 'get',
        toolbar: '#busCircuitToolbar', // 开启头部工具栏，并为其绑定左侧模板
        cols: [[
            { type: 'numbers' } // 序号
            , {
                type: 'checkbox'// 复选框
            }
            , { field: 'circuitId', title: '路线ID', hide: true }
            , { field: 'busLineName', title: '路线名', align: "center" , templet: '#busLineNameTpl'}
            , { field: 'startCityId', title: '开始城市ID' , hide: true}
            , { field: 'startCity', title: '开始城市', align: "center", width:"13%" }
            , { field: 'startBusStationName', title: '开始车站', hide: true }
            , { field: 'endCityId', title: '结束城市ID', hide: true }
            , { field: 'endCity', title: '结束城市', align: "center", width:"13%"}
            , { field: 'endBusStationName', title: '结束车站', hide: true }
            , { field: 'circuitType', title: '路线类型', hide: true }
            , { field: 'startBusStationLng', title: '开始车站经度', hide: true }
            , { field: 'startBusStationLat', title: '开始车站纬度', hide: true }
            , { field: 'endBusStationLng', title: '结束车站经度', hide: true }
            , { field: 'endBusStationLat', title: '结束车站纬度', hide: true }
            , { field: 'createTime', title: '创建时间', sort: true, hide: true, templet: "<div>{{layui.util.toDateString(d.createTime, 'yyyy-MM-dd HH:mm:ss')}}</div>" }
            , { field: 'useable', title: '是否可用', unresize: true, templet: '#checkboxTpl', align: "center", width: "15%" }
            , { fixed: 'right', align: 'center', toolbar: '#barDemo', width: "18%", align: "center" }//自定义按钮
        ]]
        , page: { //支持传入 laypage 组件的所有参数（某些参数除外，如：jump/elem） - 详见文档
            layout: ['prev', 'page', 'next', 'skip', 'count', 'limit'] //自定义分页布局
            , groups: 1 //只显示 1 个连续页码
            , first: false //不显示首页
            , last: false //不显示尾页
            , limit: 5 // 每页显示的条数
            , limits: [5, 10, 20, 30, 50] // 每页条数的选择项
            /*,prev: '<button type="button" class="layui-laypage-btn">上一页</button>'
             ,next: '<button type="button" class="layui-laypage-btn">下一页</button>'*/
        }
        , loading: true // 是否显示加载条(切换分页的时候显示）
        , title: '汽车站数据表' // 定义 table 的大标题（在文件导出等地方会用到）
    });
    form.on('submit(busCircuitSearchBtn)', function (data) {
       table.reload('busCircuitTable', {
           url: 'route/busCircuit',
           where: { // 设定异步数据接口的额外参数，任意设
        	   busLineName: $("#busLineName").val(),
        	   startCity: $("#startCity").val(),
        	   endCity: $("#endCity").val(),
               useable: $("#useable").val(),
           }, page: {
               curr: 1 //从第一页开始
           }, limit: 5
       });
       return false; // 阻止表单跳转。如果需要表单跳转，去掉这段即可
    });
    
    
    
    
    
    
    //监听行工具事件
    table.on('tool(test)', function (obj) { //注：tool 是工具条事件名，test 是 table 原始容器的属性 lay-filter="对应的值"
        var data = obj.data //获得当前行数据
            , layEvent = obj.event; //获得 lay-event 对应的值
        if (layEvent === 'del') {
            layer.open({
                type: 1,
                content: '<div style="padding: 20px 80px;">确定删除记录?</div>',
                title: ' ', // 标题
                btn: ['确定', '取消'],
                yes: function (index, layero) {
                    var circuitId = data.circuitId;
                    $.ajax({
                        async: true, // 默认为true，false表示同步，如果当前请求没有返回则不执行后续代码
                        type: "post",
                        url: 'route/busCircuit/' + circuitId,
                        data: {
                            _method: 'DELETE'
                        },
                        datatype: 'json',
                        success: function (result) {
                            if (result == 1) {
                                layui.use('layer', function () {
                                    parent.layer.msg('删除中...', {
                                        icon: 16, shade: 0.3, time: 1500

                                    }, function () {
                                        //倒计时完成后需要执行的代码
                                        // 关闭弹窗
                                        layer.close(index);
                                        layer.msg("删除成功！", {
                                            icon: 1, // 图标，可输入范围0~6
                                            time: 500
                                            // 2秒关闭（如果不配置，默认是3秒）
                                        });
                                        //window.location.reload()
                                        // 刷新数据表格
                                        table.reload('busCircuitTable', {
                                            url: 'route/busCircuit'
                                        });

                                    });
                                });


                            } else {
                                layui.use('layer', function () {
                                    parent.layer.msg('删除中...', {
                                        icon: 16, shade: 0.3, time: 2000
                                        
                                    }, function () {
                                        //倒计时完成后需要执行的代码
                                        // 关闭弹窗
                                        layer.close(index);
                                        layer.msg("删除失败！", {
                                            icon: 2, // 图标，可输入范围0~6
                                            time: 500
                                            // 2秒关闭（如果不配置，默认是3秒）
                                        });
                                        // 刷新数据表格
                                        /*table.reload('busStationTable', {
                                            url : 'route/busStation'
                                        });*/
                                    });
                                });
                            }
                        }
                    });
                }
            });
        } else if (layEvent === 'edit') {
        	if(data.useable == 'Y'){
            var startBusStationName = data.startBusStationName;//获取开始城市
            var endBusStationName = data.endBusStationName;//获取结束城市
        		var startLng = data.startBusStationLng; // 开始经度
        		var startLat = data.startBusStationLat; // 开始纬度
        		var endLng = data.endBusStationLng; // 结束经度
        		var endLat = data.endBusStationLat; // 结束纬度
        		console.log(data);
            var circuitType = data.circuitType;
            map.clearOverlays();//清除地图覆盖物
        	
        	//var start = startBusStationName;
        	//var end = endBusStationName;
            var start = new BMap.Point(startLng, startLat);
            var end = new BMap.Point(endLng, endLat);
        	//三种驾车策略：最少时间，最短距离，避开高速
        	var routePolicy = [BMAP_DRIVING_POLICY_LEAST_TIME,BMAP_DRIVING_POLICY_LEAST_DISTANCE,BMAP_DRIVING_POLICY_AVOID_HIGHWAYS];
        		map.clearOverlays(); 
        		var i= circuitType;
        		search(start,end,routePolicy[i]); 
        		function search(start,end,route){ 
        			var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true},policy: route});
        			driving.search(start,end);
        		}
        }
        else {
        	  layer.msg("查看失败！", {
                  icon: 2, // 图标，可输入范围0~6
                  time: 500
                  // 2秒关闭（如果不配置，默认是3秒）
              });
        }
        	}
    });
    
    // 关闭模态框 新增和修改模态框共用这个点击事件
    $(".modalClose").click(function () {
        // 关闭页面上所有类型的所有弹框
        layer.closeAll();
    });
    // 添加表单初始化 
    var initAddBusCircuitModal = function (data) {
        // 弹出一个页面层
        layer.open({
            type: 1 // 基本层类型0~4，1为页面层
            ,
            title: '添加路线' // 标题
            , skin: 'layui-layer-lan'//设置表头颜色
            , area: ['520px', '430px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
            ,
            content: $("#addBusCircuitModal") // 文本、html都行
            ,
            anim: 0 // 弹出动画
            ,
            resize: false // 是否允许拉伸
            ,
            end: function () { // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
                // 清空表单
                $("#addBusCircuitForm")[0].reset();
            }
        });

      
    }
    // 添加表单初始化 End
    
    
    // 添加表单提交
    form.on('submit(addbusCircuitBtn)', function (data) {
        console.log(data.field);
        data.field.startBusStationName = $("#startBusStationName :selected").text();
        data.field.startCityId = data.field.startId;
        data.field.endBusStationName = $("#endBusStationName :selected").text();
        data.field.endCityId = data.field.endId;
       // alert(data.field.startBusStationLng);
        // 执行后台代码
        $.ajax({
            type: 'POST',
            async: false,
            url: 'route/busCircuit',
            data: data.field,
            success: function (data) {
                // 关闭页面上所有类型的所有弹框
                //layer.closeAll();
                if (data == 1) {
                    layui.use('layer', function () {
                        parent.layer.msg('添加中...', {
                            icon: 16, shade: 0.3, time: 1500
                        }, function () {
                            //alert("111");
                            //倒计时完成后需要执行的代码
                            // 关闭弹窗
                            //layer.close(index);
                            layer.closeAll();
                            layer.msg("添加成功！", {
                                icon: 1, // 图标，可输入范围0~6
                                time: 1000
                            });
                           // window.location.reload()
                           // $.getScript('http://localhost:8080/bestinc/static/js/route/resource/map.js');
                            // 刷新数据表格
                            table.reload('busCircuitTable', {
                                url: 'route/busCircuit'
                            });

                        });
                    });
                } else {
                    layui.use('layer', function () {
                        parent.layer.msg('添加中...', {
                            icon: 16, shade: 0.3, time: 1500

                        }, function () {
                            //倒计时完成后需要执行的代码
                            // 关闭弹窗
                            layer.msg("添加失败！", {
                                icon: 3, // 图标，可输入范围0~6
                                time: 1000
                            });
                        });
                    });
                }
            },
            error: function () {

                layui.use('layer', function () {
                    parent.layer.msg('添加中...', {
                        icon: 16, shade: 0.3, time: 1500

                    }, function () {
                        //倒计时完成后需要执行的代码
                        // 关闭弹窗
                        layer.msg("后台异常！", {
                            icon: 2, // 图标，可输入范围0~6
                            time: 1000
                        });
                    });
                });
            }
        });
        // 刷新数据表格
        /*table.reload('busStationTable', {
            url : 'route/busStation'
        });*/
        return false; // 阻止表单跳转。如果需要表单跳转，去掉这段即可。
    });
    // 添加模态框提交 End
    
    // 修改表单初始化 
    var initUpdateBusCircuitModal = function (data) {
        // 弹出一个页面层
        layer.open({
            type: 1 // 基本层类型0~4，1为页面层
            ,
            title: '修改汽车站' // 标题
            , skin: 'layui-layer-lan'//设置表头颜色
            , area: ['520px', '480px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
            ,
            content: $("#updateBusCircuitModal") // 文本、html都行
            ,
            anim: 0 // 弹出动画
            ,
            resize: false // 是否允许拉伸
            ,
            end: function () { // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
                // 清空表单
                $("#updateBusCircuitForm")[0].reset();
            }
        });

        // 表单赋值
        form.val('updateBusCircuitForm', {
            "busLineName": data.busLineName,
            "startCity": data.startCity,
            "startBusStationName": data.startBusStationName,
            "endCity": data.endCity,
            "endBusStationName": data.endBusStationName,
            "circuitType": data.circuitType,
            "useable": data.useable,
            "circuitId": data.circuitId
            
        });
    }
    // 修改表单初始化 End
    //修改表单提交
    form.on('submit(updatebusCircuitBtn)', function (data) {
        console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
        console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
        console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
        //执行后台代码
        $.ajax({
            type: 'POST',
            async: false,
            url: 'route/busCircuit',
            data: data.field,
            success: function (data) {
                if (data == 1) {
                    layui.use('layer', function () {
                        parent.layer.msg('修改中...', {
                            icon: 16, shade: 0.3, time: 1500
                        }, function () {
                            //倒计时完成后需要执行的代码
                            // 关闭弹窗
                            //layer.close(index);
                            layer.closeAll();
                            layer.msg("修改成功！", {
                                icon: 1, // 图标，可输入范围0~6
                                time: 1000
                            });
                            // 刷新数据表格
                            //window.location.reload()
                            //$.getScript('http://localhost:8080/bestinc/static/js/route/resource/map.js');
                            table.reload('busCircuitTable', {
                                url: 'route/busCircuit'
                            });

                        });
                    });
                } else {
                    layui.use('layer', function () {
                        parent.layer.msg('修改中...', {
                            icon: 16, shade: 0.3, time: 1500

                        }, function () {
                            //倒计时完成后需要执行的代码
                            // 关闭弹窗
                            layer.msg("修改失败！", {
                                icon: 3, // 图标，可输入范围0~6
                                time: 1000
                            });
                        });
                    });
                }

            }
        });
        //刷新数据表格
        /*table.reload('busStationTable', {
            url : 'route/busStation'
        });*/
        return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
    });
    // 修改表格提交 End
    
    // 头工具栏事件
    table.on('toolbar(test)', function (obj) {
        // 获取当前表格选中状态和选中的数据
        var checkStatus = table.checkStatus(obj.config.id);
        // 区分点击的按钮
        switch (obj.event) {
            case 'addbusStation':
                // 弹出新增模态框
            	initAddBusCircuitModal();

                break;
            case 'updatebusStation':
                // 选择的数据数量
                if (checkStatus.data.length > 1) {
                    layer.msg("最多只能修改一行数据哦！！", {
                        icon: 0, //图标，可输入范围0~6
                        time: 1500
                        //2秒关闭（如果不配置，默认是3秒）
                    });
                } else if (checkStatus.data.length < 1) {
                    layer.msg("请选择要修改的数据哦！！", {
                        icon: 3, //图标，可输入范围0~6
                        time: 1500
                        //2秒关闭（如果不配置，默认是3秒）
                    });
                } else if (checkStatus.data[0].useable == 'N') {
                    layer.msg("该数据被禁用了哦！！", {
                        icon: 4, //图标，可输入范围0~6
                        time: 1500
                        //2秒关闭（如果不配置，默认是3秒）
                    });
                }
                else {
                    // 弹出修改模态框，传递当前选中的一行数据过去
                	initUpdateBusCircuitModal(checkStatus.data[0]);
                }
                break;
            case 'frozenRecord':
                // 当前选中行的数据
                var data = checkStatus.data;
                //判断是否有选中
                if (checkStatus.data.length < 1) {
                    layer.msg("请选择你要冻结的数据！！", {
                        icon: 4, //图标，可输入范围0~6
                        time: 1500//2秒关闭（如果不配置，默认是3秒）
                    });
                } else {
                    // 定义一个要删除的所有资源ID的字符串
                    var busCircuitIdStr = "";
                    // 遍历传递过来的要删除的数据
                    for (var i = 0; i < data.length; i++) {
                        if (data[i].useable == 'N') {
                            layer.msg("所选数据中有被冻结的！", {
                                icon: 1, // 图标，可输入范围0~6
                                time: 1500
                                // 2秒关闭（如果不配置，默认是3秒）
                            });
                            return;
                        }
                        // 拿出用户ID进行拼接
                        busCircuitIdStr += data[i].circuitId + ",";

                    }
                    // 截取掉因为拼接产生的多余的一个逗号
                    busCircuitIdStr = busCircuitIdStr.substring(0, busCircuitIdStr.length - 1);
                    frozenORrecoverBusCircuit(busCircuitIdStr, 'N');
                }
                break;
            case 'restoreRecord':
                // 当前选中行的数据
                var data = checkStatus.data;
                //判断是否有选中
                if (checkStatus.data.length < 1) {
                    layer.msg("请选择你要还原的数据！！", {
                        icon: 4, //图标，可输入范围0~6
                        time: 1500//2秒关闭（如果不配置，默认是3秒）
                    });
                } else {
                    // 定义一个要删除的所有资源ID的字符串
                    var busCircuitIdStr = "";
                    // 遍历传递过来的要删除的数据
                    for (var i = 0; i < data.length; i++) {
                        if (data[i].useable == 'Y') {
                            layer.msg("所选数据中有可用的！", {
                                icon: 1, // 图标，可输入范围0~6
                                time: 1500
                                // 2秒关闭（如果不配置，默认是3秒）
                            });
                            return;
                        }
                        // 拿出资源ID进行拼接
                        busCircuitIdStr += data[i].circuitId + ",";
                    }
                    // 截取掉因为拼接产生的多余的一个逗号
                    busCircuitIdStr = busCircuitIdStr.substring(0, busCircuitIdStr.length - 1);
                    frozenORrecoverBusCircuit(busCircuitIdStr, 'Y');
                }
                break;
        }
        ;
    });
    // 监听锁定操作
    form.on('switch(useable)', function (obj) {
        frozenORrecoverBusCircuit(obj.value, this.checked == true ? 'Y' : 'N');
    });
    
    // 冻结或还原的方法
    var frozenORrecoverBusCircuit = function (busCircuitIdStr, status) {
        // 用户ID
        var circuitId = busCircuitIdStr;
        // 定义提示信息, 状态
        var msg, useable;
        if (status == 'Y') {
            msg = "还原", useable = 'Y';
        } else {
            msg = "禁用", useable = 'N';
        }
        // 发送异步请求冻结或还原资源
        $.ajax({
            async: false, // 默认为true，false表示同步，如果当前请求没有返回则不执行后续代码
            type: "post",
            url: 'route/busCircuit/' + circuitId + "/" + useable,
            data: {
                _method: 'DELETE'
            },
            datatype: 'json',
            success: function (result) {
                if (result == "success") {
                    layer.msg(msg + "成功！", {
                        icon: 1, // 图标，可输入范围0~6
                        time: 1500
                        // 2秒关闭（如果不配置，默认是3秒）
                    });
                } else {
                    layer.msg(msg + "失败！", {
                        icon: 2,
                        time: 1500
                    });
                }
                // 刷新数据表格
                table.reload('busCircuitTable', {
                    url: 'route/busCircuit'
                });
            }
        });
    }
    
    

    	  $.ajax({
    	  		type:"get",
    	  		url:'route/queryAllCity',
    	  		success:function(result) {
    	  		    var mh_options = "<option value=''>请选择</option>";
    	  		    for(var i=0;i<result.length;i++){
    	  		        mh_options += "<option value='"+result[i].city+"'>"+result[i].city+"</option>";
    	  		    }
    	  		    $("#addBusCircuitModal #startCity").append(mh_options);
    	  		    form.render('select');
    	  		}
    	    })
    
  form.on('select(startCity)', function(data){
	  $("#addBusCircuitModal #startBusStationName").html("");
	  $("#addBusCircuitModal #startBusStationLng").html("");
	  $("#addBusCircuitModal #startBusStationLat").html("");
	  var startCity = data.value;
	  $.ajax({
			type:"get",
			data:{city:startCity},
			url:'route/queryAllBusStationByCity',
			success:function(result) {
				var mh_options = "<option value=''>请选择</option>";
				var b1;
				var b2;
			    for(var i=0;i<result.length;i++){
			        mh_options += "<option value='"+result[i].busStationId+"'>"+result[i].busStationName+"</option>";
			        b1 = result[i].longitude;
			        b2 = result[i].latitude;
			    }
			    $("#addBusCircuitModal #startBusStationName").append(mh_options);
			    $("#addBusCircuitModal #startBusStationLng").val(b1);
			    $("#addBusCircuitModal #startBusStationLat").val(b2);
			   // $(" #addBusCircuitModal input[ name='startCityId' ] ").val($(" #addBusCircuitModal input[ name='startBusStationName' ] ").val());
			    form.render('select');
			    //alert($(" #addBusCircuitModal input[ name='startCityId' ] ").val());
			}
		});
	})
	
	$.ajax({
    	  		type:"get",
    	  		url:'route/queryAllCity',
    	  		success:function(result) {
    	  		    var mh_options = "<option value=''>请选择</option>";
    	  		    for(var i=0;i<result.length;i++){
    	  		        mh_options += "<option value='"+result[i].city+"'>"+result[i].city+"</option>";
    	  		    }
    	  		    $("#addBusCircuitModal #endCity").append(mh_options);
    	  		    form.render('select');
    	  		}
    	    })
    
  form.on('select(endCity)', function(data){
	  $("#addBusCircuitModal #endBusStationName").html("");
	  $("#addBusCircuitModal #endBusStationLng").html("");
	  $("#addBusCircuitModal #endBusStationLat").html("");
	  
	  var endCity = data.value;
	  $.ajax({
			type:"get",
			data:{city:endCity},
			url:'route/queryAllBusStationByCity',
			success:function(result) {
				var mh_options = "<option value=''>请选择</option>";
				var a1;
				var a2;
			    for(var i=0;i<result.length;i++){
			        mh_options += "<option value='"+result[i].busStationId+"'>"+result[i].busStationName+"</option>";
			        a1 = result[i].longitude;
			        a2 = result[i].latitude;
			    }
			    $("#addBusCircuitModal #endBusStationName").append(mh_options);
			    $("#addBusCircuitModal #endBusStationLng").val(a1);
			    $("#addBusCircuitModal #endBusStationLat").val(a2);
			    form.render('select');
			}
		});
	})
	
    
    
});